package com.guli.mall.wms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.guli.common.constant.WareConstant;
import com.guli.common.to.LockStockInfoTo;
import com.guli.common.to.StockWareTo;
import com.guli.common.utils.PageUtils;
import com.guli.mall.wms.entity.WareOrderTaskDetailEntity;

import java.util.List;
import java.util.Map;

/**
 * 库存工作单
 *
 * @author 罗俊华
 * @email 1007052116@qq.com
 * @date 2020-09-29 21:37:28
 */
public interface WareOrderTaskDetailService extends IService<WareOrderTaskDetailEntity> {

    PageUtils<WareOrderTaskDetailEntity> queryPage(Integer currentPage,Integer size);

    /**
     * 根据库存记录id 和 库存记录的当前状态 来更新 库存状态
     *
     * @param wareOrderTaskDetailEntityId
     * @param oldStatus
     * @return
     */
    Boolean updateWareOrderTaskDetailStatusByIdAndOldStatus(Long wareOrderTaskDetailEntityId, WareConstant.LockStatus oldStatus,WareConstant.LockStatus newStatus);

    /**
     * 批量根据库存记录id来 更新 锁库存的状态
     * @param lockStockInfoTos
     */
    void updateStockLockStatus(List<LockStockInfoTo> lockStockInfoTos,WareConstant.LockStatus status);

    List<WareOrderTaskDetailEntity> getByOrderTaskId(Long wareOrderTaskEntityId);

    /**
     * 根据多个库存记录id 和 库存记录的当前状态 来集体更新 库存状态
     * @param wareOrderTaskDetailIds
     * @param locked
     * @param deduction
     * @return
     */
    boolean updateMultipleWareOrderTaskDetailStatusByIdAndOldStatus(List<Long> wareOrderTaskDetailIds, WareConstant.LockStatus locked, WareConstant.LockStatus deduction);
}